package correct.day13;

import java.util.*;

public class Test33 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        char[] s = scanner.next().toCharArray();

        int[] hash = new int[26];
        char maxChar = '0';
        int maxCount = 0;
        // 判断出现次数最多的字符
        for(int i = 0; i < s.length; i++) {
            char ch = s[i];
            hash[s[i] - 'a']++;
            if(hash[s[i] - 'a'] > maxCount) {
                maxCount = hash[s[i] - 'a'];
                maxChar = ch;
            }
        }

        // 判断是否可以重排
        if(maxCount > (n + 1) / 2) {
            System.out.println("no");
        } else {
            System.out.println("yes");
            char[] arr = new char[n];
            // 先对出现次数最多的字符重排
            int i = 0;
            while(maxCount-- != 0) {
                arr[i] = maxChar;
                i += 2;
            }
            // 对剩余字符重排
            for(int j = 0; j < 26; j++) {
                if(hash[j] != 0 && (char)(j + 'a') != maxChar) {
                    while(hash[j]-- != 0) {
                        if(i >= n) {
                            i = 1;
                        }
                        arr[i] = (char)(j + 'a');
                        i += 2;
                    }
                }
            }

            for(i = 0; i < n; i++) {
                System.out.print(arr[i]);
            }
        }
    }
}
